iOS-图片的合并(添加水印)+GCD倒计时 您所在的位置:网站首页 ios 图片合并 iOS-图片的合并(添加水印)+GCD倒计时

iOS-图片的合并(添加水印)+GCD倒计时

2024-07-18 06:47| 来源: 网络整理| 查看: 265

很久没有写东西了,其实有好多心得啊,小干货什么的想记录下来。懒,也是太浮躁了、沉淀下来不容易....

图片的合并(添加水印)

项目里面有个分享图片到朋友圈的功能。要求是给要分享的图片添加水印。大概就是把App应用的图片标签合成上去了。

用到的是UIKit里的UIImage context,即苹果提供的以下几个方法。

UIKIT_EXTERN void UIGraphicsBeginImageContext(CGSize size); UIKIT_EXTERN void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) NS_AVAILABLE_IOS(4_0); UIKIT_EXTERN UIImage* __null_unspecified UIGraphicsGetImageFromCurrentImageContext(void); UIKIT_EXTERN void UIGraphicsEndImageContext(void); 参数 含义 size 新创建的位图、上下文的大小 opaque 是否透明,如果图形完全不用透明,设置为YES以优化位图的存储。 scale 缩放比例

UIGraphicsBeginImageContext和UIGraphicsBeginImageContextWithOptions相比是参数的不同,功能是相同的,相当与opaque参数为NO,scale参数为1.0。

有了这几个方法,我们可以对UIImage做很多事情了。例如对图像等比缩放、重定义图像的大小、等等....

而图片的合并也类似,使用的代码不多。可以把这段代码写到工具类里面,使用的时候直接调用。

/*print:添加的图片;Origin:原始图片;*/ + (UIImage *)addPrintImg:(UIImage *)print toOriginImg:(UIImage *)Origin { //绘制位图的大小 UIGraphicsBeginImageContext(Origin.size); //Draw Origin [Origin drawInRect:CGRectMake(0, 0, Origin.size.width, Origin.size.height)]; //Draw print [print drawInRect:CGRectMake(40, Origin.size.height-print.size.height*1.5-40, print.size.width*1.5, print.size.height*1.5)]; //返回的图形大小 UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext(); //end UIGraphicsEndImageContext(); return resultImage; } 实际使用中,可根据所需的来设置Origin、print的rect。 需要注意的是:UIGraphicsGetImageFromCurrentImageContext方法不是线程安全的,操作太频繁的话,对于大图片的处理肯定会消耗大量的时间。 对线程安全要求高的话最好使用CoreGraphics来操作图像。 GCD倒计时

分享一段网上找的,使用GCD来倒计时代码。感觉还是挺好用的。

直接上代码:

+ (void)verificationCode:(void(^)())blockYes blockNo:(void(^)(id time))blockNo { //设置倒计时时间 __block int timeout = 60; dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue); dispatch_source_set_timer(_timer, dispatch_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0); dispatch_source_set_event_handler(_timer, ^{ if(timeout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有